
package com.jf.cloud.multishop.service;

import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.database.vo.PageVO;
import com.jf.cloud.multishop.dto.NoticeDTO;
import com.jf.cloud.multishop.model.Notice;
import com.jf.cloud.multishop.vo.NoticeVO;

import java.util.List;

/**
 * 公告
 *
 * @author zz
 * @date 2020-11-25 17:57:56
 */
public interface NoticeService {

    /**
     * 分页获取公告列表
     * @param pageDTO 分页参数
     * @param noticeDTO 搜索参数
     * @return 公告列表分页数据
     */
    PageVO<NoticeVO> page(PageDTO pageDTO, NoticeDTO noticeDTO);

    /**
     * 根据公告id获取公告
     *
     * @param id 公告id
     * @return 公告
     */
    NoticeVO getById(Long id);

    /**
     * 根据公告id改变公告已读状态
     *
     * @param id
     */
    void updateIsLearning(Long id);

    /**
     * 保存公告
     * @param notice 公告
     */
    void save(Notice notice);

    /**
     * 更新公告
     * @param notice 公告
     */
    void update(Notice notice);

    /**
     * 根据公告id删除公告
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据shopId和公告类型，清除缓存
     * @param shopId
     * @param type 1:平台公告 2:商城公告
     */
    void removeCacheByShopIdAndType(Long shopId, Integer type);

    /**
     * 根据店铺id和公告类型，获取公告列表
     * @param shopId 店铺id
     * @param type 1:平台公告 2:商城公告
     * @return
     */
    List<NoticeVO> getlistByShopId(Long shopId, Integer type);

    /**
     * 获取公告分页列表
     * @param pageDTO
     * @param noticeDTO
     * @return
     */
    PageVO<NoticeVO> pagePlatformNotice(PageDTO pageDTO, NoticeDTO noticeDTO);

    /**
     * 批量保存公告
     * @param noticeList
     */
    void saveBatch(List<Notice> noticeList);
}
